147 - Dollars (Programación dinámica, DP, coin change)
[and.git] / 10137 - The Trip / p10137.bak
blobc0ed3039a82c90e8e978c6ce7f65f8f6f3d73eff
1 program p10137;\r
2 \r
3 {$APPTYPE CONSOLE}\r
4 \r
5 uses\r
6   SysUtils, Math;\r
7 \r
8 function isInt(d : double) : boolean;\r
9 begin\r
10 isInt := (floor(d) = d);\r
11 end;\r
13 procedure miStringReplace(var s : string; old : char; new : char);\r
14 var\r
15 i : integer;\r
16 begin\r
18 for i := 0 to length(s) do\r
19         begin\r
20         if s[i] = old then\r
21                 s[i] := new;\r
22         end;\r
24 end;\r
26 procedure printFloat(d : double);\r
27 var\r
28   ReplaceFlags : TReplaceFlags;\r
29   s : String;\r
30 begin\r
31   s := format('$%f', [d]);\r
32   miStringReplace(s, ',', '.');\r
33   writeln(s);\r
34   //writeln(StringReplace(format('$%f', [d]), ',', '.'));\r
35   //writeln(StringReplace(format('$%f', [d]), ',', '.' ReplaceFlags));\r
36   //writeln(StringReplace(formatFloat('$#0.00', d), ',', '.', ReplaceFlags));\r
37 end;\r
39 var\r
40   s : Array[0..1001] of double;\r
41   n, i : integer;\r
42   promedio, mas, menos : double;\r
43   redondee : boolean;\r
44   ReplaceFlags : TReplaceFlags;\r
46 begin\r
47   //reset(input, 'inside.txt');\r
48   //reset(output, 'outside.txt');\r
49   read(n);\r
50   while n <> 0 do\r
51     begin\r
52     promedio := 0;\r
53     mas := 0;\r
54     menos := 0;\r
55     for i:=0 to n-1 do\r
56       begin\r
57       read(s[i]);\r
58       promedio := promedio + s[i];\r
59       end;\r
60     promedio := promedio / n;\r
61     if (isInt(promedio * 100)) then\r
62       redondee := false\r
63     else\r
64       begin\r
65       redondee := true;\r
66       promedio := floor(promedio * 100) / 100;\r
67       end;\r
68     //printFloat(promedio); writeLn('(Redondeado hacia abajo)');\r
69     for i:=0 to n-1 do\r
70       begin\r
71       if s[i] < promedio then\r
72         menos := menos + abs(s[i] - promedio)\r
73       else\r
74         if s[i] > promedio then\r
75           begin\r
76           if redondee then\r
77             mas := mas + abs(s[i] - (promedio + 0.01))\r
78           else\r
79             mas := mas + abs(s[i] - promedio);\r
80           end;\r
81       end;\r
82     if mas > menos then\r
83       printFloat(mas)\r
84     else\r
85       printFloat(menos);\r
86     read(n);\r
87     end;\r
88 end.\r